﻿#include "../../libcat/include/util/c99defs.hpp"
#include "../../libcat/include/cat-interaction.hpp"
#include "../../libcat/include/cat.hpp"

#ifdef __cplusplus
extern "C" {
#endif
	/*
	*	初始化live2d环境
	*/
	EXPORT bool cat_live2d_initailize();

	/*
	* 释放live2d环境
	*/
	EXPORT void cat_live2d_release();

	/*
	* 从文件加载一个模型 同时释放上一个模型
	*/
	EXPORT bool cat_live2d_load_model(const char* dir, const char* fileName);

	/*
	* 释放上一个模型
	*/
	EXPORT void cat_live2d_release_model();
	
	/*
	* 重新设置渲染窗口大小
	*/
	EXPORT bool cat_live2d_resize(int width, int height);

	/*
	* 伸缩模型
	*/
	EXPORT bool cat_live2d_scale(float s_x, float s_y);

	/*
	* 变换模型位置
	*/
	EXPORT bool cat_live2d_translate(float t_x, float t_y);

	/*
	* 模型运动速度
	*/
	EXPORT void cat_live2d_speed(float sp);

	/*
	* 渲染模型
	*/
	EXPORT void cat_live2d_run(void *texture);

	/***************************************************************************************/
	/*
	* 鼠标回调方法
	*/
	EXPORT void  cat_live2d_on_mouse_move_callback(float m_x,float m_y);

	EXPORT void  cat_live2d_on_mouse_click_callback(const cat_mouse_click_event* event, bool mouse_up);

	/***************************************************************************************/
	/*
	* 左右爪回调方法
	*/
	EXPORT void  cat_live2d_on_left_hand_down_callback(bool key_up);

	EXPORT void  cat_live2d_on_right_hand_down_callback(bool key_up);
	/***************************************************************************************/
	/*
	* 手柄回调方法
	*/
	EXPORT void  cat_live2d_joy_on_left_stick_down_callback(bool key_up);

	EXPORT void  cat_live2d_joy_on_right_stick_down_callback(bool key_up);

	EXPORT void  cat_live2d_joy_on_show_left_hand_callback(bool key_up);

	EXPORT void  cat_live2d_joy_on_show_right_hand_callback(bool key_up);
	
	EXPORT void  cat_live2d_joy_on_l_stick_move_callback(float m_x, float m_y);

	EXPORT void  cat_live2d_joy_on_r_stick_move_callback(float m_x, float m_y);
	/***************************************************************************************/

	EXPORT void  cat_live2d_play_motion(const char* motionGroup,int motionId);

	EXPORT void  cat_live2d_set_expression(const char* ExpressionId);

	EXPORT void  cat_live2d_set_expression_by_id(const int ExpressionId);

	EXPORT void cat_live2d_set_random_motion(const bool random, const bool randomExpression);

#ifdef __cplusplus
}
#endif